Create a Server
We'll create a simple server using Express and Vite.
Steps
Generate an Express Server
Go into a nice blank directory. We'll create a new node module and generate database wrapper code.
npm install @embracesql/vite
npm pkg set type=module
mkdir -p ./src/server
npx embracesqlcli generate express --database postgres://postgres:postgres@localhost/dvdrental > ./src/server/checklist.ts
Code up an Express Server
Create two files as shown.
tsconfig.json
{
"extends": "@embracesql/shared/tsconfig/react.tsconfig.json"
}
./src/server/main.ts
import { EmbraceSQLExpressApp } from "./checklist";
import { EmbraceViteApp } from "@embracesql/vite";
import express from "express";
const app = express();
export const PORT = Number.parseInt(process.env["PORT"] ?? "4000");
// hook EmbraceSQL middleware first to connect to the database
const embracesql = await EmbraceSQLExpressApp(
"postgres://postgres:postgres@localhost/checklist",
);
// mounting the database middleware
app.use("/embracesql", embracesql);
// and then hook in vite middleware to build and run your React
const vite = await EmbraceViteApp();
// server react at the root
app.use("/", vite);
app.listen(PORT, () => console.log(`Server is listening on port ${PORT}...`));
Run Your Server
Start it up. This server includes:
- Database access
- Hot reload
- Vite React support
npx tsx watch ./src/server/main.ts